18194
1443
Тут вже є відповіді на це питання:
Змінити рядок у Python
(29 відповідей)
Закрито 4 роки тому.
Я намагаюся змінити рядок назад, використовуючи код нижче, але результуюче значення зворотного списку - None.
Код:
str_a = 'Це заважає'
rev_word = str_a.split ()
rev_word = rev_word.reverse ()
rev_word = '' .join (rev_word)
Він повертає TypeError. Чому? 
.reverse () повертає None. Тому вам не слід призначати його змінній.
Використовуйте замість цього:
stra = 'Це рядок'
revword = stra.split ()
revword.reverse ()
revword = ''. приєднатися (revword)
Я запустив код на IDEOne для вас, щоб ви могли бачити результат. (Також зверніть увагу, що на виході є stringaisThis; ви можете замість цього використовувати '' .join (revword) з пробілом.)
Також зауважте, що метод, який ви надали, змінює лише слова, а не текст. @ ron.rothman надав посилання, де описано, як повністю змінити рядок.
|
Це мій улюблений спосіб змінити рядок:
stra = "Це рядок"
revword = stra [:: - 1]
print (revword) # "gnirts a si sihT
або, якщо ви хочете змінити порядок слів:
revword = "" .join (stra.split () [:: - 1])
print (revword) # "рядок a це"
:)
|
Різні розвороти на рядку:
instring = 'Це рядок'
reversedstring = instring [:: - 1]
print reversedstring # gnirts a si sihT
wordsreversed = '' .join (слово [:: - 1] для слова в instring.split ())
надрукувати слова reversed # sihT si a gnirts
revwordorder = '' .join (слово в слово в instring.split () [:: - 1])
print revwordorder # string a is This
revwordandorder = '' .join (слово [:: - 1] для слова в instring.split () [:: - 1])
print revwordandorder # gnirts a si sihT
|
Для подальшого посилання, коли об’єкт має такий метод, як [] .reverse (), він, як правило, виконує цю дію над об’єктом (тобто список сортується і нічого не повертає, None) на відміну від вбудованих функцій, таких як sorted, які виконують дію на об'єкт і повертає значення (тобто відсортований список)
|
>>> s = 'це рядок'
>>> s [:: - 1]
'gnirts a si siht'
>>> '' .join (стор. назад)
'gnirts a si siht'
|
Цикл for повторює рядок від кінця (остання буква) до початку (перша буква)
>>> s = 'Ви можете спробувати і це:]'
>>> rev = ''
>>> для i в діапазоні (len (s) - 1, -1, -1):
... rev + = s [i]
>>> вип
']: oot siht yrt nac uoY'
|
На основі коментарів та інших відповідей:
str_a = 'це рядок'
rev_word = '' .join (зворотний (str_a.split ()))
Прив'язка методів все-таки працює в Python ...
|
Зворот списку можна зробити, використовуючи більше одного способу. Як згадувалось у попередніх відповідях, два дуже відомі, один із функцією reverse () та два із функцією нарізки. Я даю трохи розуміння, якому з них нам слід віддати перевагу.
Ми повинні завжди використовувати функцію reverse () для сторнування списку Python. Дві причини, одна розворот на місці і дві швидше, ніж інші.
У мене є кілька цифр, які підтверджують мою відповідь,
У [15]: len (l)
Вихід [15]: 1000
У [16]:% timeit -n1 l.reverse ()
1 петля, найкраще 3: 7,87 мкс на петлю
У [17]:% timeit -n1 l [:: - 1]
1 петля, найкраще 3: 10 мкс на петлю
Для 1000 цілочисельних списків функція reverse () виконується краще порівняно з нарізанням.
|
Не відповідь, яку ви шукаєте? Перегляньте інші запитання, позначені тегом python, або задайте власні запитання.